package net.guerlab.sdk.anubis.response;

/**
 * 抽象响应对象
 * 
 * @author guer
 *
 * @param <T>
 *            响应数据类型
 */
public abstract class AbstractResponse<T> {

    /**
     * 状态码
     */
    private int code;

    /**
     * 返回信息
     */
    private String msg;

    /**
     * 数据
     */
    private T data;

    @Override
    public String toString() {
        StringBuilder builder = new StringBuilder();
        builder.append(getClass().getSimpleName());
        builder.append(" [code=");
        builder.append(code);
        builder.append(", msg=");
        builder.append(msg);
        builder.append(", data=");
        builder.append(data);
        builder.append("]");
        return builder.toString();
    }

    /**
     * 返回 状态码
     *
     * @return 状态码
     */
    public final int getCode() {
        return code;
    }

    /**
     * 设置状态码
     *
     * @param code
     *            状态码
     */
    public final void setCode(
            int code) {
        this.code = code;
    }

    /**
     * 返回 返回信息
     *
     * @return 返回信息
     */
    public final String getMsg() {
        return msg;
    }

    /**
     * 设置返回信息
     *
     * @param msg
     *            返回信息
     */
    public final void setMsg(
            String msg) {
        this.msg = msg;
    }

    /**
     * 获取数据
     * 
     * @return 数据
     */
    public final T getData() {
        return data;
    }

    /**
     * 设置数据
     * 
     * @param data
     *            数据
     */
    public final void setData(
            T data) {
        this.data = data;
    }
}
